/* eslint-disable */

import { AxiosRequestConfig } from 'axios';
import { request } from '../../utils/request';

export interface PostConfSongListMatchPageRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: {
    current: number;
    pageSize: number;
    total: number;
    list: Array<{
      id: number;
      taskType: number; // 任务类型: (1, '歌曲临时匹配'), (2, '专辑临时匹配'), (3, '歌手临时匹配'), (4, 'MV临时匹配'), (5, '唱片公司歌曲匹配'), (6, '唱片公司专辑匹配'), (7, '唱片公司歌手匹配'), (8, '唱片公司MV匹配'),
      companyId: string; // 关联公司ID，单个
      remarks: string; // 备注
      needWp: number; // 是否需要导出词曲版权数据
      sourceFile: string; // 来源文件 url, cos路径
      autoOut: number; // 是否自动导出
      outCpStatus: number; // 自动导出条件-是否有版权
      outIsOnly: number; // 自动导出条件-是否独家
      outCopyright: string; // 自动导出条件-合同，逗号分隔的合同ID
      outOriginCpCompany: string; // 自动导出条件-原始版权公司ID
      outCpCompany: string; // 自动导出条件-版权公司ID
      autoMark: number; // 是否自动标记版权
      markCpStatus: number; // 自动标记版权条件-是否有版权
      markIsOnly: number; // 自动标记版权条件-是否独家
      markCopyright: string; // 自动标记版权条件-合同ID
      markOriginCpCompany: string; // 自动标记版权条件-原始版权公司
      markCpCompany: string; // 自动标记版权条件-版权公司
      contentFile: string; // 上传文件加上流水后生成文件 cos 地址
      status: number; // 执行状态: (0, '待执行'),  //add... (1, '入库中'), (2, '执行中'), (3, '执行失败'), (4, '执行成功'), (5, '入库失败'), (6, '部分成功'), //add...
      excuteResult: string; // 执行结果详情
      matchResultFile: string; // 匹配结果文件 cos 地址
      insertTime: string;
      modifyTime: string;
      sourceFileName: string; // 上传文件名
      sourceNum: number; // 上文文件记录数
      createUser: string; // 上传人
      autoExportFile: string; // 自动导出文件地址
      indexType: string; // 曲库选择
      sourceFileCoskey: string; // 来源文件 url, cos路径key
      contentFileCoskey: string; // 上传文件加上流水后生成文件 cos 地址key
      matchResultFileCoskey: string; // 匹配结果文件 cos 地址key
      cqmath: number; // 是否词曲匹配：0-不是 1-是
    }>;
  };
  traceId: string;
}

/**
 * 分页查询
 */
export async function postConfSongListMatchPage(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchPageRes> {
  return request(data, {
    url: '/confSongListMatch/page',
    method: 'post',
    ...config,
  });
}

export interface PostConfSongListMatchDownloadTemplateRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: null; // 返回数据
  traceId: string;
}

/**
 * 下载模板
 */
export async function postConfSongListMatchDownloadTemplate(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchDownloadTemplateRes> {
  return request(data, {
    url: '/confSongListMatch/downloadTemplate',
    method: 'post',
    ...config,
  });
}

export interface PostConfSongListMatchSaveRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: {
    key: number;
  };
  traceId: string;
}

/**
 * 新增配置任务
 */
export async function postConfSongListMatchSave(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchSaveRes> {
  return request(data, {
    url: '/confSongListMatch/save',
    method: 'post',
    ...config,
  });
}

export interface GetConfSongListMatchDetailTaskIdRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: {
    id: number;
    taskType: number; // 任务类型: (1, '歌曲临时匹配'), (2, '专辑临时匹配'), (3, '歌手临时匹配'), (4, 'MV临时匹配'), (5, '唱片公司歌曲匹配'), (6, '唱片公司专辑匹配'), (7, '唱片公司歌手匹配'), (8, '唱片公司MV匹配'),
    companyId: string; // 关联公司ID，单个
    remarks: string; // 备注
    needWp: number; // 是否需要导出词曲版权数据
    sourceFile: string; // 来源文件 url, cos路径
    autoOut: number; // 是否自动导出
    outCpStatus: number; // 自动导出条件-是否有版权
    outIsOnly: number; // 自动导出条件-是否独家
    outCopyright: string; // 自动导出条件-合同，逗号分隔的合同ID
    outOriginCpCompany: string; // 自动导出条件-原始版权公司ID
    outCpCompany: string; // 自动导出条件-版权公司ID
    autoMark: number; // 是否自动标记版权
    markCpStatus: number; // 自动标记版权条件-是否有版权
    markIsOnly: number; // 自动标记版权条件-是否独家
    markCopyright: string; // 自动标记版权条件-合同ID
    markOriginCpCompany: string; // 自动标记版权条件-原始版权公司
    markCpCompany: string; // 自动标记版权条件-版权公司
    contentFile: string; // 上传文件加上流水后生成文件 cos 地址
    status: number; // 执行状态: (0, '待执行'),  //add... (1, '入库中'), (2, '执行中'), (3, '执行失败'), (4, '执行成功'), (5, '入库失败'), (6, '部分成功'), //add...
    excuteResult: string; // 执行结果详情
    matchResultFile: string; // 匹配结果文件 cos 地址
    insertTime: string;
    modifyTime: string;
    sourceFileName: string; // 上传文件名
    sourceNum: number; // 上文文件记录数
    createUser: string; // 上传人
    autoExportFile: string; // 自动导出文件地址
    indexType: string; // 曲库选择
    sourceFileCoskey: string; // 来源文件 url, cos路径key
    contentFileCoskey: string; // 上传文件加上流水后生成文件 cos 地址key
    matchResultFileCoskey: string; // 匹配结果文件 cos 地址key
    cqmath: number; // 是否词曲匹配：0-不是 1-是
  };
  traceId: string;
}

/**
 * 详情
 */
export async function getConfSongListMatchDetailTaskId(
  taskId: string | number,
  data?: any,
  config?: AxiosRequestConfig,
): Promise<GetConfSongListMatchDetailTaskIdRes> {
  return request(data, {
    url: `/confSongListMatch/detail/${taskId}`,
    method: 'get',
    ...config,
  });
}

export interface PostConfSongListMatchSongmatchPageRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: {
    current: number;
    pageSize: number;
    total: number;
    list: Array<{
      rlanguageStr: string; // 歌曲语言
      rstatusStr: string; // 歌曲状态
      rfromStr: string; // 歌曲：音频来源，t_track.Ffrom
      rindexTypeStr: string; // 1:匹配歌曲库 2：匹配长音频库 3：匹配伴奏库
      rid: number;
      rlinkId: number; // t_conf_song_list_match表id
      rdetailLinkId: number; // t_song_list_detail表id（流水id）
      rmatchDimen: string; // 匹配维度（字符串）
      rtrackId: number; // 匹配到的中央曲库的歌曲ID
      rtrackName: string; // 歌曲名
      rtrackOtherName: string; // 歌曲其他名：t_track.Fother_name
      rworksName: string; // 歌曲：作品集名
      risrc: string; // 歌曲ISRC
      rfrom: number; // 歌曲：音频来源，t_track.Ffrom
      rlanguage: number; // 歌曲语言
      rstatus: number; // 歌曲状态
      rtrackSrcVersion: string; // 歌曲 官方版本，Fsrc_version
      rtrackHideReason: string; // 歌曲：隐藏原因
      rreplaceTrackId: number; // 歌曲：保留歌曲ID
      rsingerId: string; // 艺人ID
      rsingerName: string; // 艺人名
      rsingerTransName: string; // 艺人翻译名
      rsingerOtherName: string; // 艺人其他名
      ralbumId: number; // 专辑id
      ralbumName: string; // 专辑名
      ralbumOtherName: string; // 专辑其他名
      ralbumTransName: string; // 专辑：翻译名
      ralbumSingerId: number; // 专辑：歌手（所属艺人）id
      ralbumSingerName: string; // 专辑：歌手（所属艺人）
      ralbumCopyCompanyId: number; // 专辑版权公司ID：t_album_copyright.Fcp_company_id
      ralbumCopyCompanyName: string; // 专辑版权公司名
      ralbumSongCount: number; // 专辑可用歌曲数目
      rupc: string; // 专辑UPC,  t_album.Fupc
      rpublicCompanyId: number; // 专辑：发行公司ID
      rpublicCompanyName: string; // 专辑发行公司名
      rpublicTime: string; // 专辑：发行日期 Fpublic_time
      rwordAuthor: string; // 作词: t_track_extend.Fword_author
      rmusicAuthor: string; // 作曲: t_track_extend.Fmusic_author
      rwordCpStatus: string; // 词版权状态
      rwordCount: string; // 词授权百分比: t_track_word_copyright.Fcp_percent
      rwordCpCompanyIdList: string; // 词版权公司ID
      rwordCpCompanyNameList: string; // 词版权公司名
      rwordOriginCompanyIdList: string; // 词原始版权公司ID
      rwordOriginCompanyNameList: string; // 词原始版权公司名
      rwordCopyrightIdList: string; // 词合同ID
      rmusicCpStatus: string; // 曲版权状态
      rmusicCpCompanyIdList: string; // 曲版权公司ID
      rmusicCpCompanyNameList: string; // 曲版权公司名
      rmusicOriginCompanyIdList: string; // 曲原始版权公司ID
      rmusicOriginCompanyNameList: string; // 曲原始版权公司名
      rmusicCopyrightIdList: string; // 曲合同ID
      raudioCpStatus: string; // 录音版权状态，t_track_copyright.Fcp_status
      rmusicCount: string; // 曲授权百分比: t_track_word_copyright.Fcp_percent
      raudioCpCompanyIdList: string; // 录音版权公司ID列表 t_track_copyright.Fcp_company_id
      raudioCpCompanyNameList: string; // 录音版权公司名
      raudioOriginCompanyIdList: string; // 录音原始版权公司ID列表 t_track_copyright.Forigin_cp_company_id
      raudioOriginCompanyNameList: string; // 录音原始版权公司名
      raudioCopyrightIdList: string; // 歌曲：录音合同ID列表（录音版权--关联合同）
      rtrackSimi: number; // 歌曲名相似度
      rsingerSimi: number; // 歌手相似度
      ralbumSimi: number; // 专辑相似度
      rwordSimi: number; // 词作者相似度
      rmusicSimi: number; // 曲作者相似度
      rrate: number; // 相似度
      rdesc: string; // Mv 描述
      rarea: number;
      rattr: number;
      rinsertTime: string;
      rmodifyTime: string;
      rindex: number; // 序号
      rindexType: number; // 1:匹配歌曲库 2：匹配长音频库 3：匹配伴奏库
      rtrackdbId: number;
      rtrackTransName: string; // 歌曲翻译名
      rmanualId: number; // 手工关联（歌曲ID，专辑ID，艺人ID, ...）
    }>;
  };
  traceId: string;
}

/**
 * 分页查询匹配结果
 */
export async function postConfSongListMatchSongmatchPage(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchSongmatchPageRes> {
  return request(data, {
    url: '/confSongListMatch/songmatchPage',
    method: 'post',
    ...config,
  });
}

export interface PostConfSongListMatchManualMatchRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: {
    rdetailLinkId: number;
    rmanualId: number; // 手工关联ID（歌曲ID，专辑ID，艺人ID, ...）
  };
  traceId: string;
}

/**
 * 手工关联
 */
export async function postConfSongListMatchManualMatch(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchManualMatchRes> {
  return request(data, {
    url: '/confSongListMatch/manualMatch',
    method: 'post',
    ...config,
  });
}

export interface PostConfSongListMatchManualMatchDownloadFileRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: null; // 返回数据
  traceId: string;
}

/**
 * 手工关联结果下载
 */
export async function postConfSongListMatchManualMatchDownloadFile(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<PostConfSongListMatchManualMatchDownloadFileRes> {
  return request(data, {
    url: '/confSongListMatch/manualMatchDownloadFile',
    method: 'post',
    ...config,
  });
}

export interface GetConfSongListMatchDownloadTemplateRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: null; // 返回数据
  traceId: string;
}

/**
 * 下载模板
 */
export async function getConfSongListMatchDownloadTemplate(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<GetConfSongListMatchDownloadTemplateRes> {
  return request(data, {
    url: '/confSongListMatch/downloadTemplate',
    method: 'get',
    ...config,
  });
}

export interface GetConfSongListMatchManualMatchDownloadFileRes {
  code: string; // 返回编码
  msg: string; // 返回消息
  data: null; // 返回数据
  traceId: string;
}

/**
 * 手工关联结果下载
 */
export async function getConfSongListMatchManualMatchDownloadFile(
  data?: any,
  config?: AxiosRequestConfig,
): Promise<GetConfSongListMatchManualMatchDownloadFileRes> {
  return request(data, {
    url: '/confSongListMatch/manualMatchDownloadFile',
    method: 'get',
    ...config,
  });
}
